Synchronous SRAMs are a type of SRAM that is registered and accessed in accordance with externally generated clock signals. The clock signal provides for synchronous operation of the SRAM. An SRAM is typically used as a cache. A cache is a small, fast redundant memory which duplicates frequently accessed information from a main memory, such as a DRAM.
One specific type of synchronous SRAMs is a synchronous burst SRAM which is designed in systems to achieve higher SRAM performance. Synchronous burst SRAMs have an internal counter which facilitates internal addressing of typically two to four addresses for each externally generated address that is loaded into the memory device. The internal "burst" addresses can be generated more rapidly in comparison to externally generating the same addresses and then loading them into the memory device using conventional techniques. Accordingly, the burst SRAMs operate faster and achieve higher performance. A pair of prior art synchronous SRAMs 100 and 102 connected to a 64 bit processor 104 is illustrated in FIG. 1.
The purpose of burst logic included in the above described synchronous burst SRAM is to facilitate cache line operations. A cache line is typically two or four times the data bus width. For example, in a system including a Pentium (TM) processor, the bus width is 64 bits (i.e.; 8 bytes), and the cache line size is 256 bits (i.e.; 32 bytes). Therefore, when a new cache line is read into or out of the SRAM in a system including a 64 bit processor, such as a Pentium (TM), four bus cycles are required, and a burst sequence of length four is employed. Burst sequences are discussed in greater detail below.
When it is desired to write to the SRAM 100 or 102, the processor 104 generates a byte enable signal on a byte enable line 106. The byte enable signal cannot be connected directly to the SRAM 100 or 102, however, because the byte enable signal from the processor does not distinguish between reads, writes, and other operations such as a snoop cycle.
(Snooping refers to the act of scanning bus activity to see if it is trying to modify information that is duplicated elsewhere. For example, something in cache is a duplicate of data in main memory. If a device tries to modify the data in main memory, it should also be modified in cache so that the data is coherent.)
Cache control logic 107 provides an interface between the synchronous burst SRAMs 100 and 102, and the processor. The cache control logic 107 is typically implemented in an ASIC (Application Specific Integrated Circuit).
In early SRAMs, one signal controlled writing to the SRAM. In later SRAMs, the write signal was split between bytes (e.g., upper byte and lower byte). A standard has thus developed with respect to control logic for synchronous burst SRAMs that requires one byte write input to the SRAM for every 8 or 9 bit width portion of the SRAM. The processor and the control logic both have an influence on the SRAM, and have different requirements of the SRAM.
A 64 bit processor 104, such as the Intel (TM) Pentium (TM), provides 8 byte enable outputs BE0#-BE7# (8 bits per byte). Because the byte enable signal cannot be connected directly to the SRAM 100 or 102, control logic 107 that interfaces a 64 bit processor requires 8 inputs, illustrated collectively as 108, to receive the 8 byte enable signals from the processor, and generates 8 byte write outputs, illustrated collectively as 110. The control logic thus has a total of 16 input/output (IO) lines. The control logic must be fast, making it difficult to implement all of this logic in an ASIC that operates at high frequencies.
The time required for a byte enable signal to travel from the processor into the control logic, propagate through the control logic, drive through output buffers in the control logic and into the SRAM can induce an extra wait state during write cycles. It would be easier to optimize fewer signals in the control logic ASIC 110.
It would therefore be desirable to reduce the number of input/output lines in the control logic ASIC 110.
Further, it is desirable and advantageous for synchronous burst SRAMs to facilitate a microprocessor-related function known as "address pipelining". In general, a processor attached to the synchronous burst SRAM outputs an address and data strobe signal each time a new address is ready for input into the SRAM device. On occasions, it may be desirable to delay execution of that new address. For example, in a synchronous burst SRAM, it might be desirable to continue the burst addressing operation before accepting the next external address. Accordingly, the synchronous burst SRAMs must be capable of blocking or delaying operation on the new address (as indicated by the address and data strobe signal from the processor) until the burst operation is completed.